There currently exist two distinct data types used to generate and represent images on computers. These data types are typically referred to as “raster” and “vector” data.
A “raster” is technically a rectangular array of pixels sequentially presented, or “scanned,” to display an image on a cathode ray tube. In subsequent usage, and in this specification, the term “raster” is used more broadly, in that all pixels of a raster image may be presented simultaneously or sequentially. For example, certain current display devices such as LCD (Liquid Crystal Display), DMD (Digital Mirror Device), and plasma panels display a matrix of pixels, but do so by displaying all pixels simultaneously rather than line by line. Thus, as currently used, the term “raster data” simply refers to a matrix of discrete pixels or samples, which when displayed together form the desired image. Raster data is sometimes also referred to as “sampled” data, because the raster of pixels represents a set of discrete samplings of the theoretically continuous original image.
The term “vector,” when applied to image data, refers to a method of generating or storing images wherein the image is represented succinctly by description, rather than by listing each pixel in the image. Any geometric shape can be represented as a vector graphic, and any arbitrary shape may be represented by a combination of such geometric shapes, and hence as a vector graphic. Thus for example, in vector representation, a straight line segment might be described by its two endpoints, or by its slope, length, and origin. Likewise, a circle could be described in vector representation by describing its radius and center point. Accordingly, vector data is sometimes referred to as “geometric” data. Vector data is continuous rather than discrete, since it defines an image by description rather than by listing samples. Consequently, because most current display devices display discrete pixels rather than continuous images, a vector image must usually be “rasterized” before it can be displayed. Vector data is recognized to be “resolution independent” because it defines what is essentially an infinite number of points by way of a succinct description, and accordingly may be rasterized at any resolution desired without undue difficulty.
The differences between these two data types have lead to the development of two different ways of treating data, and two distinct types of user interfaces for manipulating image data. This is partially a result of the fact that certain operations are more easily executed on vector data, while other operations are more easily executed on raster data. Indeed, some operations are possible only with one data type. So, for example, an operation to rescale a vector image involves a simple mathematical calculation; with respect to the vector circle described above, a resealing might simply involve multiplying the circle's radius by the desired value. The same operation on a raster circle would involve recalculating the positions of all of the pixels in the image, and potentially interpolating to generate new pixels to “fill in” between existing pixels if the circle is being magnified. In contrast, an operation such as “blur” is an inherently raster effect, because it involves the analysis of each pixel and its neighbors. Thus, it is generally not even possible to blur a vector image without first rasterizing it.
Accordingly, user interfaces developed for image generation and processing are traditionally tailored to one or the other of these data types. For example, the two distinct applications MacPaint and MacDraw, developed for the Apple Macintosh, treat raster and vector data types respectively. Similarly, Adobe has developed the separate applications Photoshop and Illustrator to handle raster and vector data types respectively. The user interface paradigms for the two approaches are generally quite different. The typical raster image user interface is based on the technology used to display raster images; accordingly, the typical raster image workspace is a finite rectangular space, and the user is confined to that rectangular space. Actions taken outside of the rectangle, such as a line drawn to extend past the rectangle's edge, are normally ignored or cropped. This rectangle of pixels is stored and modified in accordance with user input. Because of the extensive memory requirements associated with storing raster images, it is standard practice to store only the latest version of the raster image, making multiple “undo” or “redo” operations difficult.
The traditional “vector graphics” user interface varies from the traditional “raster graphics” interface in that it does not limit the user to a rectangular space. Rather it allows the user to place and move images within an infinite workspace. This is a consequence of the fact that a vector image is stored as a succinct description rather than as a rectangular array of pixels. As well, certain modem raster image applications have departed from the rectangular paradigm, allowing a user to move raster images about in an infinite workspace. For example, Altamira Composer used the concept of “integral pre-multiplied alpha channel,” which will be discussed below, to arrive at non-rectangular raster images, sometimes referred to as “sprites,” which may be moved about an infinite workspace. Photoshop by Adobe allows the use of sprites, albeit within the traditional rectangular raster graphics paradigm. Thus, the art of image processing still remains one of two schools of thought, with two distinct user interface paradigms generally adhered to by the creators of imaging applications.
Although there currently exist applications which allow the simultaneous display of both raster and vector images, none of these applications provide indistinguishable treatment of raster and vector data types. Accordingly the use of differing data types is quite apparent to the user of such applications. For example, a user may insert a raster image into the workspace in the application CorelDraw produced by Corel Corporation, even though CorelDraw is tailored to vector graphics. However, the inserted raster image will not be treated the same as a vector image, in that certain operations made available for vector images will not be available for the raster image, or will require additional user steps to accomplish, relative to execution of the same operation on a vector image. This forces the user to become aware of the two data types in use. As a further example, a user can insert vector images into the Photoshop workspace, but such images are immediately rasterized so that the user is only manipulating raster images. The image processing application Canvas by Deneba allows a user to manipulate both raster and vector images in the same user interface, but the user must select between separate raster and vector menu functions for the separate data types, and hence the different data types in use are not at all indistinguishable to the user.
Thus, a user of existing image generation and manipulation applications cannot interact with both raster and vector data types without being made aware that they are in fact using two data types. A typical user of image generation and manipulation applications is not versed in the nuances of the two data types; such a user is therefore likely to be confused and frustrated by an application which requires the user to have knowledge of the different data types, or which visibly treats different data types differently. Even more baffling to a typical user is the often necessary utilization of multiple applications to work with multiple data types, and the ensuing file conversions and integrations which such processing entails. Accordingly, an image processing application is needed whereby the user may freely mix and manipulate images of both data types without the need to know which image is of which type, and without being made aware of any distinction between the data types used. This would greatly enhance and simplify the user's experience, and would eliminate the need for the user to make technical decisions based on data type.